//
//  dao.h
//  chilemat
//
//  Created by Rodrigo Hinojosa on 21-02-14.
//  Copyright (c) 2014 Chilemat SpA. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <sqlite3.h>

@interface dao : NSObject{
    sqlite3 *bd;
}

- (NSString *) obtenerRutaBD;

//Número de la central variable
//-----------------------------------------------------------------------------------------------

- (void ) deleteCallCenterNumber;

- (void ) insertCallCenterNumber:(NSString*) strPhoneNumber;

- (void ) updateCallCenterNumber:(NSString*) strPhoneNumber;

- (NSString *) obtainCallCenterNumber;

//-----------------------------------------------------------------------------------------------
//Métodos para controlar el volver desde el click buscar en el home y en el Tabbar
//0 = No viene del Home, 1 = Click buscar desde el Home

- (void ) insertSearchBack:(int) intIdSearchBack;

- (void ) updateSearchBack:(int) intIdSearchBack;

- (int ) obtainSearchBack;

//------------------------------------------------------------------------------------------------
//Métodos para controlar el volver desde el detalle de producto del Home o búsquedas de productos

- (void ) insertProductBack:(int) intIdSearchBack;

- (void ) updateProductBack:(int) intIdSearchBack;

- (int ) obtainProductBack;

- (void ) deleteProductBack;

//------------------------------------------------------------------------------------------------
//Métodos para identificar el retorno desde el registro o edición del despacho.
//CREATE TABLE "ECOM_BACK_REGISTER" ("ID_BACK_REGISTER" INTEGER)

- (void ) insertRegisterBack:(int) intIdRegisterBack;

- (void ) deleteRegisterBack;

- (int ) obtainRegisterBack;

//------------------------------------------------------------------------------------------------
//CREATE TABLE "ECOM_SEARCH_BANNER"   ("SEARCH_BANNER_ID" INTEGER)

- (void ) insertSearchBanner:(int) intIdSearchBanner;

- (void ) deleteSearchBanner;

- (int ) obtainSearchBanner;
//------------------------------------------------------------------------------------------------
//CREATE TABLE "ECOM_SELECTED_BANNER" ("SBAN_SELECTED_ID" INTEGER)

- (void ) insertSelectedBanner:(int) intIdSelectedBanner;

- (void ) deleteSelectedBanner;

- (int ) obtainSelectedBanner;

//------------------------------------------------------------------------------------------------
//Observación: Métodos para saber si el usuario en alguna cuenta está registrado.

- (void ) insertUsrLogged:(int) intIdLog idUsuario: (int) intIdUsuario;

- (void ) deleteUsrLogged: (int) intIdUsuario;

- (int ) obtainUsrLogged:(int) intIdLog  idUsuario:(int) intIdUsuario;

- (int ) obtainUsrLoggedIn:(int) intIdUsuario;

//------------------------------------------------------------------------------------------------
//Observación: Métodos para saber si el usuario ya se registró localmente con un determinado id de usuario.

- (void ) insertUsrRegistered:(int) intIdUsuario;

- (void ) deleteUsrRegistered: (int) intIdUsuario;

- (int ) obtainUsrRegistered: (int) intIdUsuario;

//------------------------------------------------------------------------------------------------
// CREATE TABLE "ECOM_USUARIOS_SISTEMAS" ("USIS_ID" INTEGER PRIMARY KEY NOT NULL, "USIS_US_USUARIO" TEXT NOT NULL, "USIS_US_CLAVE" TEXT NOT NULL, "USIS_ID_SOCIAL_LOGIN" TEXT)

/*
CREATE TABLE "ECOM_USUARIOS_SISTEMAS" (
 "USIS_ID"                  INTEGER PRIMARY KEY NOT NULL,
 "USIS_US_USUARIO"          TEXT NOT NULL,
 "USIS_US_CLAVE"            TEXT NOT NULL,
 "USIS_ID_SOCIAL_LOGIN"     TEXT,
 "USIS_EMAIL"               TEXT)
*/

- (int ) insertUserSistem:(int) intIdUsuario
                  strUser:(NSString *) strUser
              strPassword:(NSString *) strPassword
         strSocialLoginId:(NSString *) strSocialLoginId
                 strEmail:(NSString *) strEmail;

- (int ) updateUserSistem:(int) intIdUsuario
                  strUser:(NSString *) strUser
              strPassword:(NSString *) strPassword
         strSocialLoginId:(NSString *) strSocialLoginId
                 strEmail:(NSString *) strEmail;


- (int ) updatePasswordUserSistem:(int) intIdUsuario
                      strPassword:(NSString *) strPassword;


- (void ) deleteUserSistem: (int) intIdUsuario;

- (int ) obtainUserSistem: (int) intIdUsuario;

- (NSArray *) obtainDatosUserSistem:(int) intIdUsuario;

- (NSString *) obtainEmailUserSistem:(int) intIdUsuario;

- (NSString *) obtainCurrentPasswordUserSistem:(int) intIdUsuario;


//------------------------------------------------------------------------------------------------
//CREATE TABLE "ECOM_CURRENT_USER" ("USIS_ID" INTEGER PRIMARY KEY NOT NULL)

- (void ) insertCurrentIdUser: (int) intIdUsuario;

- (void ) deleteCurrentIdUser;

- (int ) obtainCurrentIdUser;

//------------------------------------------------------------------------------------------------
//CREATE TABLE "ECOM_LOADING_PROCESS" ("LP_ID_LOADING_PROCESS" INTEGER PRIMARY KEY NOT NULL)

- (void ) insertLoading;

- (void ) deleteLoading;

- (int ) obtainLoading;
//------------------------------------------------------------------------------------------------
/*
CREATE TABLE "ECOM_MAESTRO_CLIENTES" (
"MC_RUT_CLIENTE"        INTEGER,
"USIS_ID"               INTEGER,
"COM_ID"                INTEGER,
"MC_DIGITO"             TEXT,
"MC_NOMBRE_COMPLETO"    TEXT,
"MC_APELLIDOS"          TEXT,
"MC_COD_TELEFONO"       TEXT,
"MC_TELEFONO"           TEXT,
"MC_DIA"                INTEGER,
"MC_MES"                INTEGER,
"MC_ANO"                INTEGER,
"MC_SEXO"               TEXT,
"MCLI_FORMA_PAGO"       INTEGER)
*/
//------------------------------------------------------------------------------------------------
- (int ) insertMaestroClientes:(int) intRutCliente
                  intIdUsuario:(int) intIdUsuario
                     strDigito:(NSString *) strDigito
             strNombreCompleto:(NSString *) strNombreCompleto
                  strApellidos:(NSString *) strApellidos
                strCodTelefono:(NSString *) strCodTelefono
                   strTelefono:(NSString *) strTelefono
                        intDia:(int) intDia
                        intMes:(int) intMes
                        intAno:(int) intAno
                        strSex:(NSString *) strSex
                  intFormaPago:(int) intFormaPago
                      strEmail:(NSString *) strEmail;

- (int ) upateMaestroClientes:(int) intRutCliente
                 intIdUsuario:(int) intIdUsuario
                    strDigito:(NSString *) strDigito
            strNombreCompleto:(NSString *) strNombreCompleto
                 strApellidos:(NSString *) strApellidos
               strCodTelefono:(NSString *) strCodTelefono
                  strTelefono:(NSString *) strTelefono
                       intDia:(int) intDia
                       intMes:(int) intMes
                       intAno:(int) intAno
                       strSex:(NSString *) strSex
                 intFormaPago:(int) intFormaPago
                     strEmail:(NSString *) strEmail;

- (void ) deleteMaestroClientes: (int) intIdUsuario;

- (int ) obtainMaestroClientes: (int) intIdUsuario;

- (NSArray *) obtainDatosCliente:(int) intIdUsuario;

//------------------------------------------------------------------------------------------------
/*
 CREATE TABLE "ECOM_DIRECCIONES_CLIENTE" (
 "DCLI_ID_DIRECCION"     INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
 "MC_RUT_CLIENTE"        INTEGER NOT NULL,
 "DCLI_DIRECCION"        TEXT NOT NULL,
 "DCLI_NUMERO"           TEXT NOT NULL,
 "DCLI_REFERENCIA"       TEXT,
 "USIS_ID"               INTEGER)
 */

- (int ) insertDireccionCliente:(int) intIdUsuario
                 intIdDireccion:(int) intIdDireccion
                  intRutCliente:(int) intRutCliente
                   strDireccion:(NSString *) strDireccion
                      strNumero:(NSString *) strNumero
                  strReferencia:(NSString *) strReferencia
                    intIdComuna:(int) intIdComuna;

- (void ) deleteDireccionCliente:(int) intIdUsuario;

- (NSArray *) obtainDireccionCliente:(int) intIdUsuario;

//-------------------------------------------------------------------------------------------------
/*
CREATE TABLE "ECOM_CLIENT_ACTION" ("CLIENTACT_ID" TEXT)
*/

- (void ) insertClientAction: (NSString *) strAction;

- (void ) deleteClientAction;

- (NSString *) obtainClientAction;


//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//CREATE TABLE "ECOM_USUARIO_FILTRO_PRECIO" ("USIS_ID" INTEGER PRIMARY KEY NOT NULL, "FPRE_DESDE" INTEGER NOT NULL,"FPRE_HASTA" INTEGER NOT NULL, "FPRE_CURRENT" INTEGER)

//CREATE TABLE "ECOM_USUARIO_TIPO_ORDENAMIENTO" ("USIS_ID" INTEGER PRIMARY KEY NOT NULL, "IDTO_ID_TIPO_ORDENAMIENTO" INTEGER NOT NULL)

- (void ) insertUserFilterPrice: (int) intIdUsuario intPriceDesde: (int) intPriceDesde intPriceHasta: (int) intPriceHasta intPriceCurrent: (int) intPriceCurrent;

- (void ) updateUserFilterPrice: (int) intIdUsuario intPriceDesde: (int) intPriceDesde intPriceHasta: (int) intPriceHasta intPriceCurrent: (int) intPriceCurrent;

- (void ) deleteUserFilterPrice: (int) intIdUsuario;

- (NSArray *) obtainUserFilterPrice:  (int) intIdUsuario;

- (int) obtainExistUserFilterPrice:  (int) intIdUsuario; //Verifica si el registro existe

//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//CREATE TABLE "ECOM_USUARIO_FILTRO_MARCA" ("USIS_ID" INTEGER PRIMARY KEY NOT NULL,"ID_MARCA_PRODUCTO" INTEGER NOT NULL)

- (void ) insertUserFilterMarc:(int) intIdUsuario  intIdMarc: (int) intIdMarc intIdRow: (int) intIdRow intIdSection: (int) intIdSection;

- (void ) updateUserFilterMarc:(int) intIdUsuario intIdMarc: (int) intIdMarc intIdRow: (int) intIdRow intIdSection: (int) intIdSection;

- (void ) deleteUserFilterMarc:(int) intIdUsuario;

- (int ) obtainUserFilterMarc:(int) intIdUsuario;

- (NSArray *) obtainUserFilterMarcData:  (int) intIdUsuario;

//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//CREATE TABLE "ECOM_USUARIO_TIPO_ORDENAMIENTO" ("USIS_ID" INTEGER PRIMARY KEY NOT NULL,"IDTO_ID_TIPO_ORDENAMIENTO" INTEGER NOT NULL)

- (void ) insertUserTipoOrdenamiento:(int) intIdUsuario  intIdTipoOrdenamiento: (int) intIdTipoOrdenamiento intIdRow: (int) intIdRow intIdSection: (int) intIdSection;

- (void ) updateUserTipoOrdenamiento:(int) intIdUsuario intIdTipoOrdenamiento: (int) intIdTipoOrdenamiento intIdRow: (int) intIdRow intIdSection: (int) intIdSection;

- (void ) deleteUserTipoOrdenamiento:(int) intIdUsuario;

- (int ) obtainUserTipoOrdenamiento:(int) intIdUsuario;

- (NSArray *) obtainUserTipoOrdenamientoData:  (int) intIdUsuario;

//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/*
 CREATE TABLE "ECOM_PRODUCTOS" (
 "PRO_ID_PRODUCTO"              INTEGER PRIMARY KEY NOT NULL,
 "PRO_DESCRIPCION_PRODUCTO"     TEXT NOT NULL,
 "PRO_DESCRIPCION_COMPLENTARIA" TEXT NULL,
 "PRO_OVERVIEW"                 TEXT NULL,
 "PRO_SKU"                      TEXT NOT NULL,
 "PRO_REVIEWS"                  INTEGER NULL,
 "PRO_NRO_VALORACIONES"         INTEGER NULL,
 "PRO_PRECIO"                   INTEGER NOT NULL,
 "PRO_PRECIO_OFERTA"            INTEGER NULL,
 "PRO_DESCUENTO"                INTEGER NULL,
 "PRO_TIEMPO_OFERTA"            TEXT NULL,
 "USIS_ID"                      INTEGER NOT NULL,
 "ID_MARCA_PRODUCTO"            INTEGER, 
 "DESCRIPCION_MARCA_PRODUCTO"   INTEGER)
*/
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------

- (int ) insertProduct:(int) intIdUsuario                           //Ok
         intIdProducto:(int) intIdProducto                          //Ok
           strDescProd:(NSString *) strDescProd                     //Ok
           strDescComplementaria:(NSString *) strDescComplementaria //Ok
           strOverview:(NSString *) strOverview                     //Ok
                strSKU:(NSString *) strSKU                          //Ok
         intNroReviews:(int) intNroReviews                          //Ok
    intNroValoraciones:(int) intNroValoraciones                         //NO
            intPrecio:(int) intPrecio                               //Ok
      intPrecioOferta:(int) intPrecioOferta                         //Ok
         intDescuento:(int) intDescuento                            //Ok
      strTiempoOferta:(NSString *) strTiempoOferta                  //OK
           intIdMarca:(int) intIdMarca                              //Ok
   strDescripcionMarca:(NSString *) strDescripcionMarca;            //Ok


- (void ) deleteProduct:(int) intIdUsuario
          intIdProducto:(int) intIdProducto;

- (void ) deleteProducts:(int) intIdUsuario;

- (void ) deleteProductsAll;

- (NSArray *) obtainProduct:(int) intIdUsuario
              intIdProducto:(int) intIdProducto;

- (NSMutableArray *) obtainProducts:(int) intIdUsuario;


//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//CREATE TABLE "ECOM_CURRENT_PRODUCT" ("PROD_ID_PRODUCTO" INTEGER PRIMARY KEY NOT NULL)

- (void ) insertCurrentProduct: (int) intIdProducto;

- (void ) deleteCurrentProduct;

- (int ) obtainCurrentProduct;

//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//CREATE TABLE "ECOM_CURRENT_GRID_ORDER" ("GRID_ORDER_ID" INTEGER PRIMARY KEY NOT NULL);

- (void ) insertCurrentGridOrder: (int) intIdOrder;

- (void ) deleteCurrentGridOrder;

- (int) obtainCurrentGridOrder;

//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/*
 CREATE TABLE "ECOM_MARCAS_PRODUCTOS" 
 ("ID_MARCA_PRODUCTO"               INTEGER     PRIMARY KEY NOT NULL,
  "DESCRIPCION_MARCA_PRODUCTO"      TEXT        NOT NULL)
*/

- (void ) deleteMarcaProducto:(int) intIdMarca;

- (int ) insertMarcaProducto:(int) intIdMarca
                            strDescripcionMarca:(NSString *) strDescripcionMarca;

//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/*
 CREATE TABLE "ECOM_DET_CARRO_COMPRA"
 ("DCARR_ID_CARRO"              INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
  "USIS_ID"                     INTEGER     NOT NULL,
  "PROD_ID_PRODUCTO"            INTEGER     NOT NULL,
  "DCARR_SKU"                   TEXT        NOT NULL,
  "DCARR_DESCRIPCION_PRODUCTO"  TEXT        NOT NULL,
  "ID_MARCA_PRODUCTO"           INTEGER     NOT NULL,
  "DCARR_CANTIDAD"              FLOAT       NOT NULL,
  "DCARR_NETO"                  INTEGER     NOT NULL,
  "DCARR_IVA"                   INTEGER     NOT NULL,
  "DCARR_TOTAL"                 INTEGER     NOT NULL)
*/
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------

- (int ) insertProductShoppingCart:(int) intIdUsuario
                        intIdCarro:(int) intIdCarro
                     intIdProducto:(int) intIdProducto
                            strSKU:(NSString *) strSKU
                       strDescProd:(NSString *) strDescProd
                        intIdMarca:(int) intIdMarca
                       dblCantidad:(float) dblCantidad
                           intNeto:(int) intNeto
                            intIva:(int) intIva
                          intTotal:(int) intTotal;

- (int ) updateProductShoppingCart:(int) intIdUsuario
                     intIdProducto:(int) intIdProducto
                            strSKU:(NSString *) strSKU
                       strDescProd:(NSString *) strDescProd
                        intIdMarca:(int) intIdMarca
                       dblCantidad:(float) dblCantidad
                           intNeto:(int) intNeto
                            intIVA:(int) intIVA
                          intTotal:(int) intTotal;

- (int ) updateProductQtyShoppingCart:(int) intIdUsuario
                        intIdProducto:(int) intIdProducto
                          dblCantidad:(float) dblCantidad;

- (int ) updateUserShoppingCart:(int) intIdUsuario
                        intIdUsuarioNew:(int) intIdUsuarioNew;

- (void ) deleteProductShoppingCart:(int) intIdUsuario intIdProducto:(int) intIdProducto;

- (void ) deleteProductsShoppingCart: (int) intIdUsuario;

- (int) obtainIdShoppingCart:(int) intIdUsuario;

- (NSMutableArray *) obtainProductsShoppingCart:(int) intIdUsuario;

- (NSArray *) obtainResumeShoppingCart:(int) intIdUsuario;

- (int ) obtainExistProductShoppingCart:(int) intIdUsuario intIdProducto:(int) intIdProducto;

//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/*
 CREATE TABLE "ECOM_IMPUESTO" (
 "IM_ID_IMPUESTO" INTEGER PRIMARY KEY NOT NULL,
 "IM_DESCRIPCION" TEXT NULL,
 "IM_VALOR" FLOAT NOT NULL)
*/

- (int) obtainCurrentTax;

//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//*****CHAT *******
- (void) crearTextWritingChat: (NSString *) strTextChat;

- (void) borrarTextWritingChat;

- (NSString*) obtenerTextWritingChat;


- (int ) obtenerIdMaxPrivateChat: (NSInteger) idU;

//Métodos para la BD del chat

- (void) insertIdPrivateChat: (NSString *) idUsr
                         idp: (NSString *) idp
                         idU: (NSString *) idU
                           m: (NSString *) m
                           r: (NSString *) r
                           w: (NSString *) w
                           t: (NSString *) t
                           u: (NSString *) u
                           i: (NSString *) i
                          re: (NSString *) re
                           p:  (NSString *) p;

- (void ) borraridPrivateChat: (NSInteger) idPrivateChat;

- (int ) existeIdPrivateChat:(NSInteger) idp;

- (void) borrarChats;

- (int ) borrarChatsxIdUser: (NSInteger) idUsrChat;

//-------------------------------------------------------------------------

- (NSMutableArray *) obtainComunas:(int) intIdCiudad;






@end














